package com.demo.java.OD101_150.OD136;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最远足迹】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145728914
 */
public class OdMain {
    // 计算坐标对的距离，并根据距离选择最远的坐标
    public static void sovle(String inputValue) {
        int right = 0;  // 用于标记右括号位置
        int left = 0;   // 用于标记左括号位置

        List<Integer> myList = new ArrayList<>();  // 临时存储一个坐标对的容器
        List<List<Integer>> allLists = new ArrayList<>();  // 存储所有有效的坐标对

        // 遍历输入字符串
        for (int i = 0; i < inputValue.length(); ++i) {
            // 如果遇到左括号，记录它的位置
            if (inputValue.charAt(i) == '(') {
                left = i + 1; // 左括号后面的位置是坐标对的起始位置
            }
            // 如果遇到右括号，记录它的位置
            else if (inputValue.charAt(i) == ')') {
                right = i; // 右括号位置是坐标对的结束位置
            }

            // 如果右括号已找到，表示已完整提取一个坐标对
            if (0 != right) {
                // 从左括号到右括号之间的子字符串提取出坐标对
                String[] subStr = inputValue.substring(left, right).split(",");
                int a = Integer.parseInt(subStr[0]); // 解析第一个坐标（a）
                int b = Integer.parseInt(subStr[1]); // 解析第二个坐标（b）

                // 校验坐标是否符合条件：不以0开头，且坐标在1到999之间
                if (subStr[0].charAt(0) != '0' && subStr[1].charAt(0) != '0' && a > 0 && a < 1000 && b > 0 && b < 1000) {
                    // 将符合条件的坐标对添加到 `myList`
                    myList.add(a);
                    myList.add(b);
                    allLists.add(myList);  // 将该坐标对添加到 `allLists`
                    myList = new ArrayList<>();  // 重新初始化 `myList`，为下一个坐标对做准备
                }

                // 重置左括号和右括号位置，为下一个坐标对做准备
                left = right = 0;
            }
        }

        // 如果有有效的坐标对
        if (allLists.size() != 0) {
            // 根据坐标到原点的距离进行排序
            allLists.sort((i, j) -> {
                // 计算第一个坐标到原点的距离的平方（避免使用浮点数）
                int ax = i.get(0) * i.get(0) + i.get(1) * i.get(1);
                // 计算第二个坐标到原点的距离的平方
                int bx = j.get(0) * j.get(0) + j.get(1) * j.get(1);

                // 如果第二个坐标的距离大于或等于第一个坐标的距离，则排序位置交换
                if (bx >= ax) {
                    return 1;  // bx 排在前面
                }
                return -1;  // ax 排在前面
            });

            // 输出距离原点最远的坐标
            System.out.println("(" + allLists.get(0).get(0) + "," + allLists.get(0).get(1) + ")");
        } else {
            // 如果没有有效坐标对，输出默认值
            System.out.println("(0,0)");
        }
    }

    public static void main(String[] args) {
        try {
            // 创建Scanner对象用于读取输入
            Scanner scan = new Scanner(System.in);

            // 读取输入的字符串
            String inputValue = scan.nextLine();

            // 校验输入是否为空或长度小于1
            if (inputValue == null || inputValue.length() < 1) {
                System.out.println("input error");
                return;
            }

            // 调用sovle方法来处理输入并输出结果
            sovle(inputValue);
        } catch (Exception e) {
            // 捕获并打印异常，输出错误信息
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}
